package com.ruoyi.site.service;

/**
 * 站点用户认证业务接口
 * 负责聚合 Users 和 UserAuths 的操作，以及邮件发送、Token生成等核心认证逻辑。
 */
public interface IAuthService {

    /**
     * 注册用户、创建 UserAuths 记录，并发送邮箱验证邮件。
     * @param email 邮箱
     * @param nickname 昵称
     * @param password 密码 (未加密)
     * @return 成功返回 true
     * @throws RuntimeException 如果用户或邮箱已存在
     */
    void register(String email, String nickname, String password);

    /**
     * 邮箱验证并登录。
     * @param email 邮箱
     * @param code 验证码或验证令牌
     * @return 成功返回 JWT Token
     * @throws RuntimeException 验证失败
     */
    String verifyEmailAndLogin(String email, String code);

    /**
     * 用户登录。
     * @param email 邮箱 (唯一标识)
     * @param password 密码
     * @return 成功返回 JWT Token
     * @throws RuntimeException 登录失败 (如密码错误、未验证等)
     */
    String login(String email, String password);

    /**
     * 处理 Google OAuth 回调，完成授权码交换、用户登录/注册流程。
     *
     * @param code Google 返回的授权码
     * @return 成功返回 JWT Token
     * @throws Exception 登录或认证失败
     */
    String handleGoogleLogin(String code) throws Exception;
}